import React, { Component } from 'react';
import { BrowserRouter, Switch, Route, Redirect } from 'react-router-dom';
import routes from './config';

export default class Router extends Component {
    render() {
        return (
            <BrowserRouter>
                <Switch>
                    {routes.map((routeConfig) => {
                        return (
                            <Route
                                key={routeConfig.path}
                                path={routeConfig.path}
                                // props 里面有路由的三大对象：match、history、location
                                render={(props) => {
                                    // 如果是不需要校验登录的页面，或者是已经登录了（sessionStorage 里面有 token 信息了，我们就认为登录）
                                    // 那我们就把路由组件返回
                                    if (
                                        routeConfig.noLogin ||
                                        window.sessionStorage.getItem('token')
                                    ) {
                                        return (
                                            <routeConfig.component
                                                {...props}
                                                routes={routeConfig.routes}
                                            />
                                        );
                                    }

                                    // 走到这里说明，页面需要校验登录，并且用户还没有登录（sessionStorage 里面没有 token 信息）
                                    return <Redirect to="/login" />;
                                }}
                            />
                        );
                    })}
                </Switch>
            </BrowserRouter>
        );
    }
}
